Modify the tab-label-destroy fix to not crash epiphany.
authorMatthias Clasen <mclasen@redhat.com>
Tue, 4 Dec 2007 18:43:47 +0000 (18:43 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Tue, 4 Dec 2007 18:43:47 +0000 (18:43 +0000)
2007-12-04  Matthias Clasen  <mclasen@redhat.com>

        * gtk/gtknotebook.c: Modify the tab-label-destroy fix to not
        crash epiphany.

svn path=/trunk/; revision=19107

ChangeLog
gtk/gtknotebook.c

index 4869c0d288f20b7f4d435d47450dd4af7ed60687..ef563533ddcc1ad57a61735c78fbeb1395af2740 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-12-04  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtknotebook.c: Modify the tab-label-destroy fix to not
+       crash epiphany.
+
 2007-12-03  Richard Hult  <richard@imendio.com>
 
        * gtk/gtkquartz.c: (_gtk_quartz_set_selection_data_for_pasteboard):
index 445ed9500015480e82fda6cefd872129e1ee8a11..55acbf5b99847e21158da813d336ab91b2ecfbe8 100644 (file)
@@ -1455,7 +1455,6 @@ gtk_notebook_destroy (GtkObject *object)
 {
   GtkNotebook *notebook = GTK_NOTEBOOK (object);
   GtkNotebookPrivate *priv = GTK_NOTEBOOK_GET_PRIVATE (notebook);
-  GList *l;
 
   if (notebook->menu)
     gtk_notebook_popup_disable (notebook);
@@ -1472,23 +1471,6 @@ gtk_notebook_destroy (GtkObject *object)
       priv->switch_tab_timer = 0;
     }
 
-  for (l = notebook->children; l; l = l->next)
-    {
-      GtkNotebookPage *page = l->data;
-      GtkWidget *w = page->tab_label;
-      if (w) {
-       g_object_ref (w);
-       gtk_notebook_remove_tab_label (notebook, page);
-       gtk_widget_destroy (w);
-       g_object_unref (w);
-      }
-    }
-  /*
-   * Prevent gtk_notebook_update_labels from doing work.  (And from crashing
-   * since we have NULL tab_labels all over.
-   */
-  notebook->show_tabs = FALSE;
-
   GTK_OBJECT_CLASS (gtk_notebook_parent_class)->destroy (object);
 }
 
@@ -4331,6 +4313,7 @@ gtk_notebook_real_remove (GtkNotebook *notebook,
   GtkNotebookPage *page;
   GList * next_list;
   gint need_resize = FALSE;
+  GtkWidget *tab_label;
 
   gboolean destroying;
 
@@ -4365,7 +4348,12 @@ gtk_notebook_real_remove (GtkNotebook *notebook,
 
   gtk_widget_unparent (page->child);
 
+  tab_label = page->tab_label;
+  g_object_ref (tab_label);
   gtk_notebook_remove_tab_label (notebook, page);
+  if (destroying)
+    gtk_widget_destroy (tab_label);
+  g_object_unref (tab_label);
   
   if (notebook->menu)
     {